﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Radiation___IM;

namespace RadiationUI.Forms
{
    public partial class AddFriend : Form
    {
        public AddFriend()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void AddFriend_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Escape)
                this.Close();

            if (e.KeyCode == Keys.Enter)
            {
                if (textBox1.Focused)
                    button1.Focus();
                else if (button1.Focused)
                    textBox1.Focus();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length <= 1 || textBox1.Text.Contains(' '))
            {
                MessageBox.Show("Il y a une erreur dans le nom de votre ami : Il doit avoir une taille minimum de 2 caractères et ne pas contenir d'espaces", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            Connection.sendToAPI(Radiation.Common.Communication.APIMethods.ADD_FRIEND + " " + textBox1.Text);

            MessageParser message = AsyncAPI.Instance.waitSignal(20);

            if (message != null)
            {
                if ((string)message.Parameters["ap"] == Radiation.Common.Communication.APIMethods.ADD_FRIEND)
                {
                    string[] splitted = message.Message.Split(new char[] { ';' });

                    if (splitted.Length > 0 && splitted[0] != null)
                    {
                        switch (splitted[0])
                        {
                            case Radiation.Common.Communication.Constants.ADDFRIEND_ACCOUNT_NOT_FOUND:
                                MessageBox.Show("Le compte de votre ami n'existe pas. Vérifiez que vous l'avez bien orthographié.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                break;
                            case Radiation.Common.Communication.Constants.ADDFRIEND_ALREADY_ADDED:
                                MessageBox.Show("Ce compte fait déjà parti de vos amis.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                break;
                            case Radiation.Common.Communication.Constants.ADDFRIEND_ERROR:
                                MessageBox.Show("Une erreur est survenue lors de l'ajout de cet ami.\r\nATTENTION : vous devez être connecté pour pouvoir ajouter des amis.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                break;
                            case Radiation.Common.Communication.Constants.ADDFRIEND_SUCCESS:
                                this.Close(); // TODO : Launch refresh of the friend list
                                break;
                        }
                    }

                }
            }
            else
            {
                MessageBox.Show("Délai d'attente dépassé (20s)", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }// timeout ... (parser == null : timeout)
        }
    }
}
